#ifndef PARTIE_H
#define PARTIE_H

#include "joueur.h"
#include "emplacements.h"

#define MODEDIX 10;
#define MODEQUINZE 15;


class Partie
{
public:
    Partie(QString nomsjoueurs[6], int nombre);
    ~Partie();

    //remplit le tableau des voisins de chaque emplacement
    void remplirVoisins();
    //renvoie vrai si : le deplacement de la source vers la destination est un deplacement valide
    //renvoie faux si : la source n'est pas une piece, ou si le deplacement n'est pas valide
    bool isDeplacementValide(Emplacements *src, Emplacements *dest);

    //teste si le deplacement est valide, puis l'effectue
    void deplacerPiece(Emplacements *src, Emplacements *dest);
    //retrouve un emplacement a partir de son numero et de sa ligne
    Emplacements *intToEmplacement(int numero, int key);

    int m_mode;         //mode de jeu (a 10 ou 15 pieces, non encore utilisé)
    int m_nbjoueurs;    //nombre de joueurs de la partie. Valeurs possibles : 2, 3, 4, 6

    Joueur* m_joueurs[6];   //liste des joueurs de la partie, le tableau n'etant pas toujours completement remplie

    QMultiMap<int, Emplacements*> m_plateau;    //Representation du plateau de jeu, MultiMap dont les clés sont les numeros de lignes,
                                                //et les valeurs tous les emplacements présents sur ces lignes

    QSet<int> *m_setdix[6];                     //liste des 6 sets associés au mode dix
    QSet<int> *m_setquinze[4];                  //liste des 4 sets associés au mode quinze, non encore utilisé

};

#endif // PARTIE_H
